/**
 * Copyright (C) 2013 Denatics Development
 *
 * Programmed by David Tiersch <dtiersch@denatics.com>
 *
 * This file is part of B0mberman.
 *
 * B0mberman is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * B0mberman is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with B0mberman. If not, see <http://www.gnu.org/licenses/>.
 */
package com.denatics.bomberman;

import com.denatics.bomberman.tools.Debugger.LEVEL;

/**
 * A central configuration file where all variable Game-preferences are being
 * stored. Such as tick-speed, movement-speed, etc.
 *
 * @author David Tiersch <dtiersch@denatics.com>
 */
public abstract class Config {

    /**
     * Shows Debug-Output.
     */
    public static final LEVEL[] DEBUG = {
            // Startup Messages.
            LEVEL.STARTUP,
            // Show FPS-Count.
            LEVEL.FPS,
            // Show added/removed sprites.
            LEVEL.SPRITE,
            // Show presses/released keys.
            LEVEL.KEYS,
            // Detailed Informations.
            LEVEL.DETAIL,
            // Error Messages.
            LEVEL.ERROR,
    };

    /**
     * Name of the Game.
     */
    public static final String NAME = "B0mberman";

    /**
     * Frame/Seconds-Cap.
     * One Tick per Frame
     */
    public static final int TICKS = 30;

    /**
     * Movement speed of the Player. Given in n as in for 1/n Field per Tick.
     */
    public static final int MOVEMENT_SPEED = 10;

    /**
     * Dimension of the Game field.
     */
    public static final int[] FIELD_DIM = { 17, 17 };

    /**
     * Size of a texture for the Entities.
     */
    public static final int ENTITYSIZE = 15;

    /**
     * Size of a texture for the Sprites.
     */
    public static final int SPRITESIZE = 15;

    /**
     * Scale with which the textures are zoomed.
     */
    public static final int SCALE = 2;

    /**
     * Offset where the window is being drawn.
     */
    public static final int[] WIN_OFFSET = { 300, 100 };

    /**
     * Delay since when a key is registered as pressed again (in ms).
     */
    public static final int KEYTIMERDELAY = 1;

    /**
     * Ratio, how many solid blocks are on the field (propability).
     */
    public static final float BLOCKDENSITY = 0.8f;

    /**
     * Empty, private constructor to forbid Creating an Instance of this class.
     */
    private Config() {
        // do nothing
    }

}
